<?php
// 1. 连接mysql  选择数据库
@include_once("conn.php");

$wd = $_GET["wd"];       // 搜索的关键词
$col = $_GET["col"];     // col (排序的列名  chinese math total)
$type = $_GET["type"];   // 排序的方式 (asc desc)
$page = $_GET["page"];   // 第几页
$size = $_GET["size"];   // 每页显示多少条


// -- limit m,n;     跳过前m条,显示n条

// -- 每页显示10条
// -- 第1页 0-10     limit 0, 10
// -- 第2页 11-20    limit 10, 10
// -- 第3页 21-30    limit 20, 10
// --   n                  (n-1)*10, 10

// =>  每页显示多少条  第几页 


// 因为数据量时有限的 => 页码范围要进行限制
// 最小值: 1
// 最大值: (查询的数据量 / size ) => 向上取值

// 如何找到满足条件的数据总数?  
// 1. mysql中的count()方法
// 2. mysqli_result Object (查询的结果对象 -> num_rows)

$obj = array();

// 找满足条件的数据总数(搜索的总数据)
$sqlAll = "select id,name,class,chinese,math,english, chinese + math + english as total from `grade`  where name like '%$wd%'";

$resultAll = mysqli_query($conn, $sqlAll);

if ($resultAll) {
    // 满足条件的数据总数(搜索的总数据)
    $total = $resultAll->num_rows;
    if ($total > 0) { // 有数据
        $maxPage = ceil($total / $size);

        if ($page > $maxPage) { // 超出最大值 就设置为最大值
            $page = $maxPage;
        }

        if ($page < 1) {
            $page = 1;
        }
        // 分页
        $skip = ($page - 1) * $size;

        $sql = "select id,name,class,chinese,math,english, chinese + math + english as total from `grade`  where name like '%$wd%' order by $col $type limit $skip,$size";

        $result = mysqli_query($conn, $sql);

        // print_r($result);

        // php 对象取值   箭头语法
        // echo $result->num_rows;  // 返回查询的数据数量


        if ($result) { // 有结果对象 => 可能有数据

            // 循环解析  => 先解析,将解析的结果赋值给变量$item ,并将其作为while循环的条件
            $all = [];
            while ($item = mysqli_fetch_assoc($result)) {  // 解析成功 =>  返回关联数组  解析失败=>结束循环

                // 后端 数据预处理 (后端向前端返回数据之前 => 先将数据处理一下)
                $item["chinese"] =  $item["chinese"] * 1;
                $item["math"] =  $item["math"] * 1;
                $item["english"] =  $item["english"] * 1;
                $item["total"] =  $item["total"] * 1;

                array_push($all, $item);
            }

            $obj["status"] = true;
            $obj["message"] = "OK";

            // 告诉前端 查询的总数据  最大页码 当前页是第几页
            $obj["total"] = $total;
            $obj["maxPage"] = $maxPage;
            $obj["current"] = $page;

            $obj["list"] =  $all;
        } else {
            $obj["status"] = false;
            $obj["message"] = "sql语句有误";
        }
    } else { //没有数据
        $obj["status"] = true;
        $obj["message"] = "暂无数据!";
    }
} else {
    $obj["status"] = false;
    $obj["message"] = "sql语句有误";
    $obj["sql"] = $sqlAll;
}






echo json_encode($obj);


// 单数据 => 直接解析 (对应id,name查找用户, 判断数据是否存在)
// 多数据 => 循环解析 (批量查找数据)
